package util;

public class Criptografia {

	
	
	public String criptografarString(String dados){
			
			//dados = new StringBuffer(dados).reverse().toString();
		      dados = new StringBuffer(dados).toString();
			StringBuffer retorno = new StringBuffer();
			
			char [] caracteres = new char[dados.length()];
			caracteres = dados.toCharArray();
			
			for(int indice  = 0 ; indice < dados.length() ; indice++){
				
				if(caracteres[indice] == 'a')
					retorno.append('5');
				else if(caracteres[indice] == 'b')
					retorno.append('8');
				else if(caracteres[indice] == 'c')
					retorno.append('7');
				else if(caracteres[indice] == 'd')
					retorno.append('0');
				else if(caracteres[indice] == 'e')
					retorno.append('1');
				else if(caracteres[indice] == 'f')
					retorno.append('2');
				else if(caracteres[indice] == 'g')
					retorno.append('6');
				else if(caracteres[indice] == 'h')
					retorno.append('3');
				else if(caracteres[indice] == 'i')
					retorno.append('9');
				else if(caracteres[indice] == 'j')
					retorno.append('4');
				else if(caracteres[indice] == 'l')
					retorno.append('d');
				else if(caracteres[indice] == 'm')
					retorno.append('c');
				else if(caracteres[indice] == 'n')
					retorno.append('b');
				else if(caracteres[indice] == 'o')
					retorno.append('a');
				else if(caracteres[indice] == 'p')
					retorno.append('e');
				else if(caracteres[indice] == 'q')
					retorno.append('f');
				else if(caracteres[indice] == 'r')
					retorno.append('g');
				else if(caracteres[indice] == 's')
					retorno.append('h');
				else if(caracteres[indice] == 't')
					retorno.append('j');
				else if(caracteres[indice] == 'u')
					retorno.append('i');
				else if(caracteres[indice] == 'v')
					retorno.append('l');
				else if(caracteres[indice] == 'x')
					retorno.append('m');
				else if(caracteres[indice] == 'z')
					retorno.append('o');
				else if(caracteres[indice] == 'w')
					retorno.append('n');
				else if(caracteres[indice] == 'y')
					retorno.append('q');
				else if(caracteres[indice] == 'k')
					retorno.append('p');
				else if(caracteres[indice] == '/')
					retorno.append('r');
				else if(caracteres[indice] == '\\')
					retorno.append('s');
				else if(caracteres[indice] == '-')
					retorno.append('t');
				else if(caracteres[indice] == '_')
					retorno.append('u');
				else if(caracteres[indice] == '(')
					retorno.append('v');
				else if(caracteres[indice] == ')')
					retorno.append('x');
				else if(caracteres[indice] == '%')
					retorno.append('z');
				else if(caracteres[indice] == '@')
					retorno.append('w');
				else if(caracteres[indice] == '<')
					retorno.append('y');
				else if(caracteres[indice] == '>')
					retorno.append('k');
				else 
					retorno.append(caracteres[indice]);
			}
			
			return retorno.toString();
		}



	public String descriptografarString(String dados){
			
			//dados = new StringBuffer(dados).reverse().toString();
		      dados = new StringBuffer(dados).toString();
		      
			StringBuffer retorno = new StringBuffer();
			
			char [] caracteres = new char[dados.length()];
			caracteres = dados.toCharArray();
			
			//a,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,x,z,w,y,k
			
			for(int indice  = 0 ; indice < dados.length() ; indice++){
				
				if(caracteres[indice] == '5')
					retorno.append('a');
				else if(caracteres[indice] == '8')
					retorno.append('b');
				else if(caracteres[indice] == '7')
					retorno.append('c');
				else if(caracteres[indice] == '0')
					retorno.append('d');
				else if(caracteres[indice] == '1')
					retorno.append('e');
				else if(caracteres[indice] == '2')
					retorno.append('f');
				else if(caracteres[indice] == '6')
					retorno.append('g');
				else if(caracteres[indice] == '3')
					retorno.append('h');
				else if(caracteres[indice] == '9')
					retorno.append('i');
				else if(caracteres[indice] == '4')
					retorno.append('j');
				else if(caracteres[indice] == 'd')
					retorno.append('l');
				else if(caracteres[indice] == 'c')
					retorno.append('m');
				else if(caracteres[indice] == 'b')
					retorno.append('n');
				else if(caracteres[indice] == 'a')
					retorno.append('o');
				else if(caracteres[indice] == 'e')
					retorno.append('p');
				else if(caracteres[indice] == 'f')
					retorno.append('q');
				else if(caracteres[indice] == 'g')
					retorno.append('r');
				else if(caracteres[indice] == 'h')
					retorno.append('s');
				else if(caracteres[indice] == 'j')
					retorno.append('t');
				else if(caracteres[indice] == 'i')
					retorno.append('u');
				else if(caracteres[indice] == 'l')
					retorno.append('v');
				else if(caracteres[indice] == 'm')
					retorno.append('x');
				else if(caracteres[indice] == 'o')
					retorno.append('z');
				else if(caracteres[indice] == 'n')
					retorno.append('w');
				else if(caracteres[indice] == 'q')
					retorno.append('y');
				else if(caracteres[indice] == 'p')
					retorno.append('k');
				else if(caracteres[indice] == 'r')
					retorno.append('/');
				else if(caracteres[indice] == 's')
					retorno.append('\\');
				else if(caracteres[indice] == 't')
					retorno.append('-');
				else if(caracteres[indice] == 'u')
					retorno.append('_');
				else if(caracteres[indice] == 'v')
					retorno.append('(');
				else if(caracteres[indice] == 'x')
					retorno.append(')');
				else if(caracteres[indice] == 'z')
					retorno.append('%');
				else if(caracteres[indice] == 'w')
					retorno.append('@');
				else if(caracteres[indice] == 'y')
					retorno.append('<');
				else if(caracteres[indice] == 'k')
					retorno.append('>');
				else 
					retorno.append(caracteres[indice]);
			}
			
			return retorno.toString();
		}
	

	
	
	
	public int criptografarInteiro(int numero){
		
		String numeroString = new String(numero + "");
		StringBuffer retorno = new StringBuffer();
		
		char [] caracteres = new char[numeroString.length()];
		caracteres = numeroString.toCharArray();
		
		for(int indice  = 0 ; indice < numeroString.length() ; indice++){
			
			if (caracteres[indice] == '7')
				retorno.append('0');
			else if (caracteres[indice] == '5')
				retorno.append('1');
			else if (caracteres[indice] == '0')
				retorno.append('2');
			else if (caracteres[indice] == '4')
				retorno.append('3');
			else if (caracteres[indice] == '1')
				retorno.append('4');
			else if (caracteres[indice] == '3')
				retorno.append('5');
			else if (caracteres[indice] == '2')
				retorno.append('6');
			else if (caracteres[indice] == '9')
				retorno.append('7');
			else if (caracteres[indice] == '6')
				retorno.append('8');
			else if (caracteres[indice] == '8')
				retorno.append('9');
			else 
				retorno.append(caracteres[indice]);
		}
		
		return Integer.parseInt(retorno.toString());
	}



	public int descriptografarInteiro(int numero) {

		// dados = new StringBuffer(dados).reverse().toString();
		String numeroString = new String(numero + "");

		StringBuffer retorno = new StringBuffer();

		char[] caracteres = new char[numeroString.length()];
		caracteres = numeroString.toCharArray();

		for (int indice = 0; indice < numeroString.length(); indice++) {

			if (caracteres[indice] == '0')
				retorno.append('7');
			else if (caracteres[indice] == '1')
				retorno.append('5');
			else if (caracteres[indice] == '2')
				retorno.append('0');
			else if (caracteres[indice] == '3')
				retorno.append('4');
			else if (caracteres[indice] == '4')
				retorno.append('1');
			else if (caracteres[indice] == '5')
				retorno.append('3');
			else if (caracteres[indice] == '6')
				retorno.append('2');
			else if (caracteres[indice] == '7')
				retorno.append('9');
			else if (caracteres[indice] == '8')
				retorno.append('6');
			else if (caracteres[indice] == '9')
				retorno.append('8');
			else
				retorno.append(caracteres[indice]);
		}
		
		return Integer.parseInt(retorno.toString());
	}
	
	
	

	public double criptografarDecimal(double numero) {

		String numeroString = new String(numero + "");
		StringBuffer retorno = new StringBuffer();

		char[] caracteres = new char[numeroString.length()];
		caracteres = numeroString.toCharArray();

		for (int indice = 0; indice < numeroString.length(); indice++) {

			if (caracteres[indice] == '7')
				retorno.append('0');
			else if (caracteres[indice] == '5')
				retorno.append('1');
			else if (caracteres[indice] == '0')
				retorno.append('2');
			else if (caracteres[indice] == '4')
				retorno.append('3');
			else if (caracteres[indice] == '1')
				retorno.append('4');
			else if (caracteres[indice] == '3')
				retorno.append('5');
			else if (caracteres[indice] == '2')
				retorno.append('6');
			else if (caracteres[indice] == '9')
				retorno.append('7');
			else if (caracteres[indice] == '6')
				retorno.append('8');
			else if (caracteres[indice] == '8')
				retorno.append('9');
			else
				retorno.append(caracteres[indice]);
		}

		return Double.parseDouble(retorno.toString());
	}



	public double descriptografarDecimal(double numero) {

		// dados = new StringBuffer(dados).reverse().toString();
		String numeroString = new String(numero + "");

		StringBuffer retorno = new StringBuffer();

		char[] caracteres = new char[numeroString.length()];
		caracteres = numeroString.toCharArray();

		for (int indice = 0; indice < numeroString.length(); indice++) {

			if (caracteres[indice] == '0')
				retorno.append('7');
			else if (caracteres[indice] == '1')
				retorno.append('5');
			else if (caracteres[indice] == '2')
				retorno.append('0');
			else if (caracteres[indice] == '3')
				retorno.append('4');
			else if (caracteres[indice] == '4')
				retorno.append('1');
			else if (caracteres[indice] == '5')
				retorno.append('3');
			else if (caracteres[indice] == '6')
				retorno.append('2');
			else if (caracteres[indice] == '7')
				retorno.append('9');
			else if (caracteres[indice] == '8')
				retorno.append('6');
			else if (caracteres[indice] == '9')
				retorno.append('8');
			else
				retorno.append(caracteres[indice]);
		}
		
		return Double.parseDouble(retorno.toString());
	}
	
	
}
